package game.model.objets;

import game.controler.Action;
import game.Utils;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.ImageIcon;

/**
 *
 * @author Gab'z
 */
public abstract class Objet extends Inventoriable {

    private String mixId = null;
    private String mixNewObjet = null;

    public Objet(String idPlan, String description, boolean isActif , int posX, int posY, boolean isTop) {
        super(idPlan, description, isActif, posX, posY, isTop);
        System.out.println("+ Objet : " + id);
        if (Utils.mode == Utils.LOCAL) {
            this.imgJeu = new ImageIcon(Utils.baseURLlocal + "objets\\" + id + Utils.format_img);
            this.imgZoom = new ImageIcon(Utils.baseURLlocal + "objets\\" + id + "_z" + Utils.format_img);
            this.imgInventaire = new ImageIcon(Utils.baseURLlocal + "objets\\" + id + "_i" + Utils.format_img);
        } else {
            try {
                this.imgJeu = new ImageIcon(new URL(Utils.baseURL + "objets/" + id + Utils.format_img));
                this.imgZoom = new ImageIcon(new URL(Utils.baseURL + "objets/" + id + "_z" + Utils.format_img));
                this.imgInventaire = new ImageIcon(new URL(Utils.baseURL + "objets/" + id + "_i" + Utils.format_img));
            } catch (MalformedURLException ex) {
                System.err.println("Erreur lors de la récupération de l'image de l'objet d'id : " + id);
            }
        }
    }

    public Objet(String idPlan, String description, boolean isActif, String mixId, String mixNewObjet, int posX, int posY, boolean isTop) {
        super(idPlan, description, isActif, posX, posY, isTop);
        System.out.println("+ Objet : " + id);
        if (Utils.mode == Utils.LOCAL) {
            this.imgJeu = new ImageIcon(Utils.baseURLlocal + "objets\\" + id + Utils.format_img);
            this.imgZoom = new ImageIcon(Utils.baseURLlocal + "objets\\" + id + "_z" + Utils.format_img);
            this.imgInventaire = new ImageIcon(Utils.baseURLlocal + "objets\\" + id + "_i" + Utils.format_img);
        } else {
            try {
                this.imgJeu = new ImageIcon(new URL(Utils.baseURL + "objets/" + id + Utils.format_img));
                this.imgZoom = new ImageIcon(new URL(Utils.baseURL + "objets/" + id + "_z" + Utils.format_img));
                this.imgInventaire = new ImageIcon(new URL(Utils.baseURL + "objets/" + id + "_i" + Utils.format_img));
            } catch (MalformedURLException ex) {
                System.err.println("ERREUR lors de la récupération de l'image de l'objet d'id : " + id);
            }
        }
        this.mixId = mixId;
        this.mixNewObjet = mixNewObjet;
    }

    public String getMixActionId() {
        return mixNewObjet;
    }

    public String getMixId() {
        return mixId;
    }

    @Override
    public void executeActionClicVue() {
        // Mettre un objet dans l'inventaire
        Action.ajouterObjetInventaire(this.getId());
    }

    public static String getObjetCombinaison(Objet objet1, Objet objet2) {
        if (objet1.mixNewObjet != null) {
            System.out.println("Objet à ajouter à l'inventaire en combinant " + objet1.id + " et " + objet2.id + " : " + objet1.mixNewObjet);
            return objet1.mixNewObjet;
        } else if (objet2.mixNewObjet != null) {
            System.out.println("Objet à ajouter à l'inventaire en combinant " + objet1.id + " et " + objet2.id + " : " + objet2.mixNewObjet);
            return objet2.mixNewObjet;
        } else {
            System.err.println("ERREUR lors de la combinaison des objets ; " + objet1.id + " et " + objet2.id);
            return null;
        }
    }

    public boolean isCombinable(Objet objet2) {
        if (this.mixId != null && this.mixId.equals(objet2.id)) {
            return true;
        }
        if (objet2.mixId != null && objet2.mixId.equals(this.id)) {
            return true;
        }
        return false;
    }
}
